在我们使用match这种查询的时候,在es底层其实会自动的转换成term+bool的这种查询
示例一
原请求体:1
2
3{
"match": { "title": "java elasticsearch"}
}
es转换后的请求体:1
2
3
4
5
6
7
8{
"bool": {
"should": [
{ "term": { "title": "java" }},
{ "term": { "title": "elasticsearch" }}
]
}
}
使用诸如上面的match query进行多值搜索的时候,es会在底层自动将这个match query转换为bool的语法
示例二
原请求体:1
2
3
4
5
6
7
8{
"match": {
"title": {
"query": "java elasticsearch",
"operator": "and"
}
}
}
es转换后的请求体:1
2
3
4
5
6
7
8{
"bool": {
"must": [
{ "term": { "title": "java" }},
{ "term": { "title": "elasticsearch" }}
]
}
}
示例三
原请求体:1
2
3
4
5
6
7
8{
"match": {
"title": {
"query": "java elasticsearch hadoop spark",
"minimum_should_match": "75%"
}
}
}
es转换后的请求体:1
2
3
4
5
6
7
8
9
10
11{
"bool": {
"should": [
{ "term": { "title": "java" }},
{ "term": { "title": "elasticsearch" }},
{ "term": { "title": "hadoop" }},
{ "term": { "title": "spark" }}
],
"minimum_should_match": 3
}
}